package com.qf.java2201.web;

import com.qf.java2201.pojo.HUser;
import com.qf.java2201.pojo.HUserinfo;
import com.qf.java2201.service.UserService;
import com.qf.java2201.service.impl.UserServiceImpl;
import com.qf.java2201.utils.MD5Util;
import org.apache.commons.beanutils.BeanUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;

/**
 * @date 2022/4/7
 * @desc 注册功能
 */
@WebServlet("/register")
public class RegisterServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //自动封装表单数据    以表单项 name 为key     表单输入的值 为  value
        Map<String, String[]> parameterMap = req.getParameterMap();

        HUser hUser = new HUser();
        HUserinfo hUserinfo = new HUserinfo();

        // 借助工具类  自动把map 中的数据  封装到 javabean 中  这个是根据属性名来封装的
        // 所以  map 中  的 key  必须和 javabean 中的 属性名 一致

        try {
            BeanUtils.populate(hUser,parameterMap);
            BeanUtils.populate(hUserinfo,parameterMap);

            hUser.setUi(hUserinfo);
            // 工具类 对 明文密码进行加密   数据库存的是 加密后的密码
            String md5pwd = MD5Util.encodePwdByMD5(hUser.getUpwd());
            hUser.setUpwd(md5pwd); // 封装加密的密码

           // System.out.println(hUser);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }

        UserService userService = new UserServiceImpl();

        int result = userService.register(hUser);

        if(result==1){
            // 注册成功  跳转到 登录页
            req.getRequestDispatcher("/login.jsp").forward(req,resp);
        }else{
            // 注册失败  跳转到 注册页
            req.setAttribute("reg_info","注册失败");
            req.getRequestDispatcher("/reg.jsp").forward(req,resp);
        }
    }
}
